Many signal processing applications use matrix-based calculations. One example is channel equalization in wireless communications. Example equalization techniques that use matrices include linear equalization techniques, such as generalized Rake (G-Rake) and chip equalization, frequency-domain linear equalization, linear turbo equalization, decision feedback equalization (DFE) that includes a linear, feedforward filter, and prefiltering, a form of partial linear equalization used, e.g., in GSM/EDGE, WiFi, WiMAX, and LTE. In addition to wireless systems, linear equalization techniques are used for wireline modems and magnetic recording. Another matrix-driven signal processing area is antenna array processing involving multiple receive antennas. Array processing and equalization are often performed together.
Consider the following example filter or weight computation taken from a linear equalization and array processing context, which is typical of the type of matrix-based calculations that modern signal processors must calculate. Received signal quantities, such as samples from different time delays and receive antennas or prefiltered quantities such as Rake-combined values, can be collected into a column vector x. This vector can often be modeled asx=hs+n, where s is a modulation symbol to be recovered, h is a channel response accounting for the effects of the transmitter, transmission medium, and receiver front-end, and n is a vector of noise and interference (impairment). A soft symbol estimate can be obtained by applying a filter or combining vector to the received vector x, givingŝ=wHxwhere superscript “H” denotes Hermitian transpose (conjugate transpose). The filter or weight computation involves solving a set of equations of the formRw=h,   (1)where R is a data or impairment covariance matrix, w is a vector of combining weights or filter coefficients, and h is a signal that represents a channel response associated with R. Equation (1) is typically solved one of two ways:
1) iteratively, using Gauss-Seidel, conjugate gradient, or other approaches, or
2) non-iteratively, by inverting R or using a factorization such as Cholesky factorization or QR decomposition.
The second approach is of interest here because it requires inverting the matrix R.
An inverted matrix computation also exists in some signal quality estimation computations, e.g., signal-to-interference-plus-noise ratio (SINR) or simply SIR. SINR may be estimated for a variety of applications including, in the example context of wireless communications, power control, rate adaptation, and as a metric for processing delay selection. If the weights w in equation (1) are used in a linear receiver, the signal quality can be estimated asSINR=hHR−1h=wHh=hHw   (2)Again, an inverted matrix R−1 must be calculated.
In addition to equalization and some signal quality determinations having to invert a matrix, linear multi-user detection techniques, such as linear minimum mean squared error (MMSE) and decorrelator detection, also involve inverting a matrix and applying the result to chip samples or despread symbols to demodulate the symbols transmitted. In this case, the matrix may consist of symbol waveform correlations or chip sample correlations.
The weights or filter coefficients are parameters combined with a received or other input signal in order to estimate some kind of information like received data symbols, SINR, position, direction-of-arrival, etc. Another parameter estimation application is channel estimation. Certain channel estimation techniques involve solving a set of equations or inverting a matrix. Examples include Wiener or MMSE channel estimation and recursive channel estimation, such as Kalman filtering and recursive least squares (RLS) filtering. With adaptive filtering, a matrix inverse is often updated recursively. A similar parameter estimation problem occurs in radar and sonar signal processing.
Signal processing applications like those examples described above that require inverting a matrix confront a numerical problem when the matrix R to be inverted is “ill-conditioned.” An ill-conditioned matrix is one where the ratio of its largest eigenvalue to smallest eigenvalue is large. There are different possible approaches to address this problem. One is based on regularization where a small positive value is added to the diagonal of matrix R to improve the conditioning of R so that the matrix is easier to invert. A drawback with this approach is that the accuracy of the matrix calculation is affected, which potentially sacrifices some performance in the signal processing end result. Another approach is based on virtual noise where a second matrix Q is added to the matrix R. Matrix Q represents the covariance of an imaginary noise source (regularization can be viewed as a special case of virtual white noise). The difficulty is again selecting Q so that performance is not sacrificed. Noise corresponding to frequencies where there is no signal energy could be added, but that has limited application and efficacy. The third approach is based on singular value decomposition (SVD) equalization where the received signal is projected onto the major eigenvectors of its received covariance matrix. But this approach is complex, requiring calculation of eigenvalues and eigenvectors, and it also sacrifices performance.
What is needed is a simple and effective way to invert a matrix that can handle ill-conditioned numbers and still provide good performance across a wider variety of signal processing applications.